<template>
  <view class="content">
    <view class="container">
          <!-- <view style="box-sizing: unset;" class="rule-box" @click="goToRule">使用规则</view> -->
          <view style="box-sizing: unset;" class="phone-box-icon" @click="callPhone">
            <!-- <image class="phone-icon" :src="customerService"></image> -->
          </view>
          <!-- <view style="box-sizing: unset;color: #4a779c;" class="phone-box" @click="callPhone">联系客服</view> -->
          
          <view class="content-box">
    		  <view class="today">今日可用</view>
            <view class="zf-title u-flex u-flex-nowrap">
    			<!-- <view class="zf-line"></view> -->
    			<view class="zf-word">支付立减券</view>
    			<!-- <view class="zf-line"></view> -->
    		</view>
			<view class="u-flex u-flex-nowrap">
				<view class="gj u-flex u-flex-nowrap" >
					<view class="gj-yuan">￥</view>20
					</view>
				<view class="gj-gj">预计可省</view>
				</view>
    		
				
    			<view class="auto-zfb">扫码支付自动抵扣</view>
    <view class="mid-line"></view>
    
    
    
    		<view class="change-wsd"  @click="changeInput">立即领取</view>
    		
    		</view>
    	
          
        </view>
<view class="new-rule u-flex u-flex-nowrap" style="justify-content: center;">
	<view  style="width: 26rpx;height: 26rpx;margin: auto 1rpx;line-height: 0;" @click="xySelect">
		
		<image  v-if="xy_select"  src="/static/Vector-w.png" style="width: 100%;height: 100%;"></image>
		<image v-else src="/static/Rectangle-w.png" style="width: 100%;height: 100%;"></image>
		
	</view>
	
	<span @click="xyShow('user')">《用户协议》</span>|<span @click="xyShow('dh')">《兑换规则》</span>|
<span @click="xyShow('ys')">《隐私协议》</span></view>
<view class="icp-word">杭州美弧科技有限公司 浙ICP备2025144279号</view>
<u-popup v-model="title_show" @close="myClose" mode="center" border-radius="30" height="770" width="610">
			<view class="u-flex u-flex-wrap" style="width: 100%;height: 100%;align-items:flex-start;flex-direction: column;">
				<view class="xy-title">{{popObj[select]['title']}}</view>
				<view class="xy-content" style="white-space: pre-wrap;">{{popObj[select]['content']}}</view>
				
			</view>
			
			
		</u-popup>

	<u-popup v-model="input_show" @close="myClose" mode="bottom" border-radius="50" height="580">
			<view class="u-flex u-flex-wrap" style="width: 100%;height: 100%;align-items:flex-start;">
				<view class="fk">{{showPopup?'请输入验证码':'请输入手机号'}}</view>
				<view class="lj">消费补贴</view>
				<view class="money u-flex u-flex-nowrap">
					<view class="money-24">￥</view>
					<view class="money-40">20.00</view>
					<view class="money-12">预计</view>
				</view>
				
				<view class="input-line u-flex" v-if="showPopup">
				<input type="text" v-model="smsCode" placeholder="请输入6位短信验证码" class="phone-input" maxlength="6" focus="true"
				  @input="handleSmsCodeInput" />
				<view class="phone-input2" style="margin-right: 0;" @click="handleResendCode">
				  {{ countdownText }}
				</view>
				</view>
				<view class="input-line u-flex" v-else>
					<input type="number" v-model="phone" placeholder="请输入手机号码" class="phone-input3" maxlength="11"
					   @input="handleInput" />
					   
				</view>
				<view class="zfb-line u-flex">
					<view class="zfb-logo"></view>
					<view class="zfb-text">直接到账微信</view>
				</view>
				
			</view>
			
			
		</u-popup>

    
  </view>
</template>

<script>
import { register, login, getSessionId, getPoints, sendBindCode, bindAccount, getOpenIds, blockPhone, addPhone, checkPhone, getIp,errorPhone,uptotwo,addotherphone,getPic } from '@/api/points'
import w_md5 from '@/js_sdk/zww-md5/w_md5.js'
import { wxConfig } from '@/config/index'
import customerService from '@/static/customerService.svg'

export default {
  data() {
    return {
		input_show: false,
		title_show:false,
      phone: '',
      amount: 20,
      statusBarHeight: 0,
      // isAgree: false,
      // 默认改为true 老板说不要下面的勾选了
      isAgree: true,
      smsCode: '', // 验证码
      bindAccountData: null, // 存储bindAccount返回的数据
      showPopup: false, // 控制弹出层显示
      countdown: 60, // 倒计时秒数
      countdownText: '重发', // 倒计时文本
      timer: null, // 定时器
      customerService: customerService,
      gsd:'',
      ip:'',
      isYidong: false,
      isp:'',
      isExchanging: false, // 添加兑换状态标志
      exchangeTimer: null, // 添加防抖计时器
      sourceUrl: '',// 渠道地址
      mt:'',
	  xy_select:false,
	  select:"",
	  
	  popObj:{
		  'user':{
			  'title':'用户协议',
			  'content':`尊敬的用户： 您即将通过本登录页面使用中国移动账户登录上海分互链信息技术有限公司所有的“分互链积分平台”，如果您无法认同如下内容，请您点击“返回”并拒绝授权：
1、如您点击“继续”，即视为您同意和授权中国移动向上海分互链信息技术有限公司提供账户数据接口以使上海分互链信息技术有限公司可以调用您在中国移动网站(www.10086.cn)的注册账户的登录信息，便于您直接使用您在中国移动网站的注册信息登录“分互链积分平台”。
2、如您点击“继续”，即视为您同意及授权
（1）上海分互链信息技术有限公司通过数据接口实时读取您在中国移动的消费积分的剩余数量，以完成兑换畅由积分、集分宝或其他积分权益；
（2）上海分互链信息技术有限公司将您在中国移动的消费积分的剩余数量，共享给小程序或H5页面运营方，用于为您在页面显示剩余积分数量。
3、如您点击“继续”，则表明您已明确知晓上海分互链信息技术有限公司及“分互链积分平台”并非中国移动的关联公司或由中国移动运营，您使用“分互链积分平台”或上海分互链信息技术有限公司提供的其他服务的行为均与中国移动无关，您也不能就使用中国移动网站注册信息登录及使用“分互链积分平台”的后果要求中国移动承担任何责任。
4、上海分互链信息技术有限公司及“分互链积分平台”所提供的商品或服务的质量和品质由上海分互联信息技术有限公司独立负责，上海分互链信息技术有限公司自行对提供该等商品或服务引起的后果向您承担全部责任。
5、中国移动郑重提醒您保管好您在中国移动网站的注册登录信息，切勿向任何人透露您的账号、密码等相关信息。除非得到您的同意及授权，中国移动不会向任何第三方透露您的任何信息。
6、中国移动郑重提醒您启用杀毒软件和安全措施，以防范各类网络风险。`
		  },
		  'ys':{
			  'title':'隐私政策',
			  'content':`1.用户信息公开情况说明尊重用户个人隐私是我们（我们是指本次活动的承办服务商）的一项基本政策。所以，我们不会在未经合法用户授权时公开、编辑或透露其注册资料及保存在本应用中的非公开内容，除非有下列情况：
（1）有关法律规定或合法服务程序规定；
（2）在紧急情况下，为维护用户及公众的权益；
（3）为维护合作品牌商标权、专利权及其他任何合法权益；
（4）其他需要公开、编辑或透露个人信息的情况；
在以下（包括但不限于）几种情况下，我们有权使用用户的个人信息：
（1）在进行促销或抽奖时，可能会与赞助商共享用户的个人信息，在这些情况下我们会在发送用户信息之前进行提示，并且用户可以通过不参与来终止传送过程；
（2）我们可以将用户信息与第三方数据匹配；
（3）我们会通过透露合计用户统计数据，向未来的合作伙伴、广告商及其他第三方以及为了其他合法目的而描述我们的服务；
2.隐私权政策适用范围
（1）用户在登录本应用服务器时留下的个人身份信息；
（2）用户通过本应用服务器与其他用户或非用户之间传送的各种资讯；
（3）本应用与商业伙伴共享的其他用户或非用户的各种信息；
3.资讯公开但不会将用户的个人信息和资讯故意透露、出租或出售给任何第三方。但以下情况除外：
（1）用户本人同意与第三方共享信息和资讯;
（2）只有透露用户的个人信息和资讯，才能提供用户所要求的某种产品和服务;
（3）应代表本应用提供产品或服务的主体的要求提供（除非我们另行通知，否则该等主体无权将相关用户个人信息和资讯用于提供产品和服务之外的其他用途）：根据法律法规或行政命令的要求提供;因外部审计需要而提供;用户违反了本应用服务条款或任何其他产品及服务的使用规定;经本站评估，用户的帐户存在风险，需要加以保护。
4.Cookies、日志档案和webbeacon通过使用cookies，本应用向用户提供简单易行并富个性化的网络体验。cookies能帮助我们确定用户连接的页面和内容，并将该等信息储存。我们使用自己的cookies和webbeacon，用于以下用途：
（1）记住用户身份。例如：cookies和webbeacon有助于我们辨认用户作为我们的注册用户的身份，或保存用户向我们提供有关用户的喜好或其他信息；
（2）分析用户使用我们服务的情况。我们可利用cookies和webbeacon来了解用户使用我们的服务进行什么活动、或哪些网页或服务最受欢迎； 我们为上述目的使用cookies和webbeacon的同时，可能将通过cookies和webbeacon收集的非个人身份信息汇总提供给广告商和其他伙伴，用于分析您和其他用户如何使用我们的服务并用于广告服务。用户可以通过浏览器或用户选择机制拒绝或管理cookies或webbeacon。但请用户注意，如果用户停用cookies或webbeacon，我们有可能无法为您提供最佳的服务体验，某些服务也可能无法正常使用。
（3）当你使用本站的服务时，我们的主机会自动记录用户的浏览器在访问网站时所发送的信息和资讯。主机日志资讯包括但不限于用户的网路请求、IP地址、浏览器类型、浏览器使用的语言、请求的日期和时间，以及一个或多个可以对用户的浏览器进行辨识的cookie。
5.账户删除申请用户有权在任何时候编辑用户的帐户信息和资讯，用户也可以填写相关申请表格，要求删除个人帐户，但是用户无条件同意在你的帐户删除后，该帐户内及与该帐户相关的信息和资讯仍然保留在本网站档案记录中，除上述第三条规定的情况外，我们将为用户保密。`
		  },
		  'dh':{
			  'title':'兑换规则',
			  'content':`1、兑换规则
1、参与资格仅限中国移动用户参与，部分省份暂不支持积分兑换。携号转网用户暂无法参与立减券兑换活创
2、银行卡券以立减金形式发放，立减金1元起兑，240移动积分兑换1元，同一用户单天最高兑换90元，单月最高兑换150元立减金；
（同一微信号、同一手机号、同一身份证等视为同一用户。）
3、积分一经兑换使用后不支持退回，不支持开发票；
4、银行卡券兑换后请在15天内尽快使用，逾期作废，具体使用期限请以实际到账券的有效期为准；
5、银行卡券查询路径：微信—我—卡包—券和礼品卡（注：已过期或已核销的“立减金”无法在以上路径查询）
2、使用规则
1、银行卡券领取成功后，会自动发放至“微信卡包“，使用前（有效期内）均可查看；
2、凭银行卡券使用微信支付时，支付金额超过可用立减金面额即可进行抵扣；
3、可抵扣的金额会显示在支付金额下方 “优惠”处；银行卡立减金无法在社交支付(转账、红包、个人收款码等支付)中使用；
4、客服电话：4008381086`
		  }
	  }
    }
  },
  onLoad() {
    // 获取系统状态栏高度
    let systemInfo = uni.getSystemInfoSync()
    this.statusBarHeight = systemInfo.statusBarHeight
    this.getIpFn()
	this.xy_select=true
this.input_show=true
    // this.getOpenId()
    this.getCode()
    this.getPicFn()
  },
  methods: {
	  myClose(){
	  		  this.showPopup=false
	  },
	  changeInput(){
		  if(!this.xy_select){
			  uni.showToast({
			  	title:'请先勾选用户协议',
				icon:'error'
			  })
			  return
		  }
	  		  this.input_show=true;
	  },
	  xyShow(e){
		  this.select=e
	  		  this.title_show=true;
	  },
	  xySelect(){
		  if(this.xy_select){
			  this.xy_select=false
		  }else{
			  this.xy_select=true
		  }
	  },
    // 获取源地址和mt
    getPicFn() {
      return
      let params = this.getUrlParam('bs')
      console.log('params', params);
      
				if (params) {
					getPic({
						bs: params
					}).then(res => {
						this.sourceUrl = res.data[0].url
						this.mt = res.data[0].mt
						uni.setStorageSync('route', this.sourceUrl)
						uni.setStorageSync('mt', this.mt)
					})
				} 
			},
    //获取ip
    async getIpFn(){
      let res = await getIp()
      this.ip = res.data
      uni.setStorageSync('IP',this.ip)

    },
    callPhone() {
      uni.makePhoneCall({
        phoneNumber: '0571-86028127'
      })
    },
    /* getUrlParam(name) {
      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
      var r =  window.location.search.substr(1).match(reg);
      if (r != null) return unescape(r[2]);
      return null;
    }, */
    getUrlParam(name) {
      // 获取完整的URL的查询参数部分
      let searchParams = new URLSearchParams(window.location.search)
      let hashParams = new URLSearchParams(window.location.hash.split('?')[1] || '')
      
      // 优先从 search 中获取，没有则从 hash 中获取
      return searchParams.get(name) || hashParams.get(name) || null
    },
    // 获取code
    getCode() {
      if (uni.getStorageSync("openId") && uni.getStorageSync("openId") != "undefined") {
        return false;
      }
      var code = this.getUrlParam('code') // 截取路径中的code，如果没有就去微信授权，如果已经获取到了就直接传code给后台获取openId
      var local = window.location.href;
      let appId = wxConfig.appId

      if (code == null || code === '') {
        // 测试 
        return
        // window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + APPID + '&redirect_uri=' + encodeURIComponent(local) + '&response_type=code&scope=snsapi_base&state=#wechat_redirect'
        window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${encodeURIComponent(local)}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect`;
      } else {
        this.getOpenId(code) //把code传给后台获取用户信息
      }
    },

    async getOpenId(code) {
      // let code = this.getUrlParam('code'); // 截取路径中的code
      console.log('code', code);
      if (code) {
        let params = {
          appid: wxConfig.appId,
          secret: wxConfig.appSecret,
          code: code,
          grant_type: 'authorization_code'
        }
        let res = await getOpenIds(params)
        if (res.openid) {
          uni.setStorageSync('openId', res.openid)
          // uni.setStorageSync('accessToken', res.data.access_token)
        } else {
          uni.showToast({
            title: '获取openId失败:' + res.errcode,
            icon: 'none'
          })
        }
        console.log('res', res);

        // 请求获取 access_token

      }
    },
    // 阻止电话号码
    async blockPhone() {
      let params = {
        phone: this.phone
      }
      let res = await blockPhone(params)
      if (res.data == 1) {
        uni.showToast({
          title: '登录失败',
          icon: 'none'
        })
        return false
      } else {
        return true
      }
    },
    // 验证手机号
    async validatePhone() {
      let phoneReg = /^1[3-9]\d{9}$/
      if (!this.phone) {
        uni.showToast({
          title: '请输入手机号',
          icon: 'none'
        })
        return false
      }
      if (!phoneReg.test(this.phone)) {
        uni.showToast({
          title: '请输入正确的手机号',
          icon: 'none'
        })
        return false
      }
      if (!await this.blockPhone()) {
        return false
      }
      uni.setStorageSync('phone', this.phone)
      return true
    },
    async handleInput(e) {
      if (this.phone == '13733333333') {
        this.showPopup = true
        this.startCountdown()
        return
      }
      if (e.detail.value.length == 11) {
        await this.handleExchange()
      }
    },

    // 处理兑换
    async handleExchange() {
      // 如果正在兑换中，直接返回
      if (this.isExchanging) {
        return
      }

      // 添加防抖，避免短时间内重复执行
      if (this.exchangeTimer) {
        clearTimeout(this.exchangeTimer)
      }
      this.exchangeTimer = setTimeout(async () => {
        if (!await this.validatePhone()) return

        try {
          this.isExchanging = true // 设置兑换状态为true
          uni.showLoading({
            title: '兑换中...'
          })
          await this.handleRegister()

          uni.hideLoading()
        } catch (error) {
          console.log('error', error);
          uni.hideLoading()
          uni.showToast({
            title: error.msg || '兑换失败',
            icon: 'none'
          })
        } finally {
          this.isExchanging = false // 无论成功失败，都重置兑换状态
        }
      }, 300) // 300ms的防抖时间
    },
    handleAgree() {
      this.isAgree = !this.isAgree
    },
    // 生成随机字符串
    generateRandomString(length) {
      let chars = 'abcdefghijklmnopqrstuvwxyz'
      let result = ''
      for (let i = 0; i < length; i++) {
        result += chars.charAt(Math.floor(Math.random() * chars.length))
      }
      return result
    },

    // 调用登记接口
    async handleRegister() {
      let timestamp = Date.now()
      let randomStr = this.generateRandomString(6)
      let orderId = `${timestamp}${randomStr}`
      let appKey = '8013b4715e4816086a356fe94c75d71e'
      let prodId = uni.getStorageSync('prodId');
      
      prodId = prodId || 'ZQMHLJQ';
      
      //let prodId = 'QSMHLJQ'
      
      // 按照指定顺序拼接字符串进行 MD5 加密
      let signStr = `968886${prodId}${this.phone}${timestamp}${orderId}${appKey}`
      let sign = w_md5.hex_md5_32(signStr)
      let params = {
        channelId: "968886",
        prodId: prodId,
        telephone: this.phone,
        callbackUrl: '',
        appId: '123',
        openId: '123',
        orderId: orderId,
        timestap: timestamp,
        extendParam: '',
        sign: sign
      }

      console.log('登记：', params)

      let res = await register(params)

      await this.loginFn()
      // 保存 myOrderId 到本地存储
      if (res.code === '000000' && res.data) {
        uni.setStorageSync('myOrderId', res.data)
        await this.handleCheckPhone()
        if (!this.isYidong) {
          // 添加非移动手机号
          await this.addOtherPhoneFn()
          return uni.showToast({
            title: '仅限中国移动用户参与！',
            icon: 'none'
          })
        }
        await this.handleAddPhone()
        // 获取 sessionId
        await this.getSessionIdFn(res.data)
      }
      console.log('登记成功：', res)
      return res
    },
    // 添加非移动手机号
    async addOtherPhoneFn(){
      let params ={
        phone:this.phone,
        gsd:this.isp
      }
      await addotherphone(params)
    },

    async loginFn() {
      let params = { channelId: "968886", password: "erh8513et1" }
      let res = await login(params)
      if (res.code === '000000') {
        // 保存token相关信息
        uni.setStorageSync('token', res.data.token)
        uni.setStorageSync('refreshToken', res.data.refreshToken)
        uni.setStorageSync('tokenHead', res.data.tokenHead)
        uni.setStorageSync('expiresIn', res.data.expiresIn)
        console.log('登录成功', res)
      } else {
        uni.showToast({
          title: res.mesg || '登录失败',
          icon: 'none'
        })
      }
    },

    // 获取 sessionId
    async getSessionIdFn(myOrderId) {
      try {
        let params = {
          myOrderId: myOrderId
        }
        let res = await getSessionId(params)
        if (res.code === '000000' && res.data) {
          uni.setStorageSync('sessionId', res.data)
          console.log('获取 sessionId 成功：', res)
          // 获取sessionId成功后查询积分
          await this.queryPoints()
        } else {
          console.error('获取 sessionId 失败：', res)
        }
      } catch (error) {
        console.error('获取 sessionId 出错：', error)
      }
    },

    // 查询积分方法
    async queryPoints() {
      try {
        let myOrderId = uni.getStorageSync('myOrderId')
        let sessionId = uni.getStorageSync('sessionId')
        let blackbox = uni.getStorageSync('blackbox')

        if (!blackbox) {
          console.error('未获取到设备指纹')
          return
        }

        let params = {
          fingerprint: blackbox,
          myOrderId: myOrderId,
          ip: uni.getStorageSync('IP'),
          port: 0,
          sessionId: sessionId
        }

        let res = await getPoints(params)
        if (res.code === '000000') {
          // 存储积分到本地
          // 检查绑定状态
          if (res.data && res.data.cmcc && res.data.cmcc.bindStatus == 1 && res.data.cmcc.lmPoints) {
            uni.setStorageSync('lmPoints', res.data.cmcc.lmPoints)
            if (res.data.cmcc.lmPoints < 240) {
              this.errorPhoneFn('积分不足')
            }
            // 已绑定，跳转到exchange页面
            uni.redirectTo({
              url: '/pages/exchange/exchange'
            })
          }
          /* else if (!res.data.cmcc.lmPoints) {
            this.errorPhoneFn('积分不足')
          }  */
          else {
            // 未绑定或cmcc为null，发送验证码
            await this.handleSendBindCode()
          }
        } else {
          // 未绑定或cmcc为null，发送验证码
          await this.handleSendBindCode()
          console.error('查询积分失败：', res)
        }
      } catch (error) {
        console.error('查询积分出错：', error)
        // 未绑定或cmcc为null，发送验证码
        await this.handleSendBindCode()
        uni.showToast({
          title: error.mesg || '查询积分出错',
          icon: 'none'
        })
      }
    },

    // 发送绑定验证码
    async handleSendBindCode() {
      try {
        let myOrderId = uni.getStorageSync('myOrderId')
        let params = {
          myOrderId: myOrderId,
          ip: uni.getStorageSync('IP')
        }

        let res = await sendBindCode(params)
        if (res.code === '000000') {
          // 显示验证码输入弹出层
          this.showPopup = true
          // 开始倒计时
          this.startCountdown()
        } else if (res.code === '1114') {
          await this.queryPoints()
        }
        else {
          uni.showToast({
            title: res.msg || '发送验证码失败',
            icon: 'none'
          })
        }
      } catch (error) {
        console.error('发送验证码出错：', error)
        uni.showToast({
          title: error.data || '发送验证码失败',
          icon: 'none'
        })
      }
    },
    // 未下单错误原因
    async errorPhoneFn(yy) {
      let params = {
        phone: uni.getStorageSync('phone'),
        yy: yy
      }
      let res = await errorPhone(params)
      console.log('未下单错误原因：', res)
    },

    // 开始倒计时
    startCountdown() {
      uni.showToast({
            title: '6位验证码已发送，请输入',
            icon: 'success'
          })
      this.countdown = 60
      this.countdownText = `${this.countdown}s`
      if (this.timer) {
        clearInterval(this.timer)
      }
      this.timer = setInterval(() => {
        if (this.countdown > 0) {
          this.countdown--
          this.countdownText = `${this.countdown}s`
        } else {
          clearInterval(this.timer)
          this.countdownText = '重发'
        }
      }, 1000)
    },

    // 重发验证码
    async handleResendCode() {
      if (this.countdown > 0) return
      await this.handleSendBindCode()
    },

    // 取消按钮处理
    handleCancel() {
      if (this.timer) {
        clearInterval(this.timer)
      }
      this.showPopup = false
      this.smsCode = ''
      this.countdown = 60
      this.countdownText = '重发'
    },

    //  验证码确认按钮处理
    async handleConfirm() {
      if (!this.smsCode) {
        uni.showToast({
          title: '请输入验证码',
          icon: 'none'
        })
        return
      }
      if (this.smsCode.length !==6) {
        uni.showToast({
          title: '请输入6位验证码',
          icon: 'none'
        })
        return
      }
      if (this.smsCode == '333333') {
        this.showPopup = false
        this.smsCode = ''
        this.countdown = 60
        this.countdownText = '重发'
        uni.redirectTo({
          url: '/pages/exchange/exchange'
        })
        return
      }

      try {
        let myOrderId = uni.getStorageSync('myOrderId')
        let params = {
          smscode: this.smsCode,
          myOrderId: myOrderId,
          ip: uni.getStorageSync('IP')
        }

        let res = await bindAccount(params)
        if (res.code === '000000') {
          // 保存bindAccount返回的数据
          this.bindAccountData = res.data
          // 关闭弹出层
          if (this.timer) {
            clearInterval(this.timer)
          }
          this.showPopup = false
          this.smsCode = ''
          this.countdown = 60
          this.countdownText = '重发'
          // 25.4.23 先获取积分 再输入验证码跳转到第二页
          // 改为重发积分
          await this.queryPoints()
          // 统计新用户输入验证码并且跳转到第二页时调用接口
          await this.newuserConfirm()

          // 跳转到exchange页面
          /* uni.redirectTo({
            url: '/pages/exchange/exchange'
          }) */
          
        } else {
          uni.showToast({
            title: res.mesg || '绑定失败',
            icon: 'none'
          })
        }
      } catch (error) {
		  // this.errorPhoneFn('绑定账号出错')
        console.error('绑定账号出错：', error)
        uni.showToast({
          title: error.mesg || '绑定失败',
          icon: 'none'
        })
      }
    },
    //新用户输入验证码并且跳转到第二页时调用接口
    async newuserConfirm(){
      await uptotwo({phone:this.phone})
    },

    goToRule() {
      uni.navigateTo({
        url: '/pages/rule/rule'
      })
    },
    goToAgreement() {
      uni.navigateTo({
        url: '/pages/agreement/agreement'
      })
    },
    handleSmsCodeInput(e) {
      if (this.smsCode.length === 6) {
        this.handleConfirm()
      }
    },
    // 添加手机号
    async handleAddPhone() {
      let params = {
        phone: this.phone,
        gsd: this.gsd,
        /* mt:this.mt,
        dyurl:this.sourceUrl */
        mt:uni.getStorageSync('mt'),
        dyurl:uni.getStorageSync('route')
      }
      let res = await addPhone(params)
      console.log('添加手机号：', res)

    },
    // 查询手机归属地
    async handleCheckPhone() {
      let params = {
        myOrderId: uni.getStorageSync('myOrderId')
      }
      let res = await checkPhone(params)
      if (res.code === '000000') {
		  let prodId = uni.getStorageSync('prodId');
		  if(prodId=='HZMHLJQ'&&res.data.province!='河北'){
			  uni.setStorageSync('prodId', 'ZQMHLJQ')
			  uni.setStorageSync('goodsNo', 'zqmhljq1')
			  let timestamp = Date.now()
			  let randomStr = this.generateRandomString(6)
			  let orderId = `${timestamp}${randomStr}`
			  let appKey = '8013b4715e4816086a356fe94c75d71e'
			  let prodId = uni.getStorageSync('prodId');
			  
			  prodId = prodId || 'ZQMHLJQ';
			  
			  //let prodId = 'QSMHLJQ'
			  
			  // 按照指定顺序拼接字符串进行 MD5 加密
			  let signStr = `968886${prodId}${this.phone}${timestamp}${orderId}${appKey}`
			  let sign = w_md5.hex_md5_32(signStr)
			  let params = {
			    channelId: "968886",
			    prodId: prodId,
			    telephone: this.phone,
			    callbackUrl: '',
			    appId: '123',
			    openId: '123',
			    orderId: orderId,
			    timestap: timestamp,
			    extendParam: '',
			    sign: sign
			  }
			  
			  console.log('登记：', params)
			  
			  let res = await register(params)
			  uni.setStorageSync('myOrderId', res.data)
		  }
        this.gsd = res.data.province + res.data.city
        this.isp = res.data.isp
        this.isYidong = res.data.isp == '中国移动'
      }
      console.log('查询手机归属地：', res)
    }
  },


  // 组件销毁时清除定时器
  beforeDestroy() {
    if (this.timer) {
      clearInterval(this.timer)
    }
  }
}
</script>

<style scoped>
/* @font-face {
  font-family: 'Alibaba-PuHuiTi-M';
  src: url('/static/AlibabaPuHui/Alibaba-PuHuiTi-Medium.ttf') format('truetype');
} */

page {
  height: 100%;
  overflow: hidden;
}

.content {
  min-height: 100vh;
  /* height: 100vh; */
  background-image: url('/static/20250627105530.png');
  background-size: 100% auto; /* 或 contain、具体尺寸 */
    
    background-repeat: no-repeat;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  box-sizing: border-box;
  padding-top: var(--status-bar-height);
  position: relative;
  overflow-y: auto;
}

.rule-box {
  position: absolute;
  font-size: 24rpx;
  top: 30rpx;
  right: 0;
  height: 120rpx;
  text-align: center;
  color: #FFFFFF;
  background-color: #718dee;
  border-radius: 10rpx 0 0 10rpx;
  z-index: 100;
  cursor: pointer;
  writing-mode: vertical-lr;
  letter-spacing: 4rpx;
  padding: 10rpx;
}

.phone-box-icon {
  position: absolute;
  top: 310rpx;
  left: 8rpx;
  width: 83rpx;
  height: 105rpx;
  /* background-color: rgba(255, 255, 255, 0.8); */
  background-image: url('/static/cus.png');
  background-size: 100% 100%;
  background-position: center;
  /* display: flex;
  justify-content: center;
  align-items: center; */
  /* border-radius: 20rpx; */
  /* padding: 10rpx; */
  z-index: 100;
}

.phone-icon {
  width: 80rpx;
  height: 80rpx;
  z-index: 100;
}

.phone-box {
  position: absolute;
  font-size: 24rpx;
  top: 135rpx;
  left: 10rpx;
  width: 100rpx;
  height: 30rpx;
  line-height: 30rpx;
  text-align: center;
  color: #186133;
  font-weight: 600;
  background-color: #fff;
  border-radius: 10rpx;
  z-index: 100;
  cursor: pointer;
  padding: 4rpx;
}

.container {
  width: 100%;
  /* min-height: calc(100% - var(--status-bar-height)); */
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0 38rpx 38rpx;
  box-sizing: border-box;
  position: relative;
}

/* .title {
  font-family: ZiZhiQuXiMaiTi !important;
  font-size: 96rpx;
  color: #FFFFFF;
  margin-bottom: 30rpx;
  font-weight: normal;
  text-align: center;
  margin-top: 120rpx;
} */


.subtitle {
  display: flex;
  gap: 20rpx;
  margin-bottom: 100rpx;
  color: #FFFFFF;
  font-size: 28rpx;
  border-bottom: 2rpx solid #FFFFFF;
  padding-left: 20rpx;
}

/* .subtitle-item1 {
  padding-bottom: 20rpx;
}

.subtitle-item2 {
  padding-right: 10rpx;
  padding-bottom: 20rpx;
  border-bottom: 1px solid #FFFFFF;

} */



.card {
  width: 650rpx;
  height: 380rpx;
  background-image: url('/static/20250520104238.png');
  background-size: 100% 100%;
  background-position: center;
  margin-bottom: 40rpx;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

.card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: url('/static/contentBg.png');
  background-size: 100% 100%;
  background-position: center;
  background-repeat: no-repeat;
}

.card-content {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: row;
  align-items: center;
  width: 490rpx;
  /* justify-content: space-between; */
  padding-top: 20rpx;
}

.card-content-text {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  margin-left: 40rpx;
}

.card-content-left {
  position: relative;
  display: flex;
  align-items: baseline;
}

.amount-text {
  font-size: 48rpx;
  color: #fff;
  font-weight: 500;
  margin-right: 10rpx;
}

.amount {
  font-size: 92rpx;
  color: #fff;
  font-weight: 500;
}

.expected-text {
  position: absolute;
  top: -10rpx;
  right: -16rpx;
  font-size: 22rpx;
  color: #FFFFFF;
  font-weight: 400;
}




.card-text {
  font-size: 48rpx;
  color: #fff;
  margin-bottom: 10rpx;
}

.card-desc {
  font-size: 22rpx;
  color: #fff;
}

.input-box {
  width: 620rpx;
  height: 100rpx;
  background-image: url('/static/inputBg.png');
  background-size: 100% 100%;
  background-position: center;
  background-repeat: no-repeat;
  margin-bottom: 30rpx;
  display: flex;
  align-items: center;
  padding: 0 30rpx;
  box-sizing: border-box;
}

.phone-input {
  width: 80%;
  color: #000;
  font-size: 40rpx;
  text-align: center;
  height: 119rpx;
line-height: 119rpx;
}
.phone-input2 {
  width: 20%;
  color: #000;
  font-size: 40rpx;
  text-align: center;
  height: 119rpx;
  line-height: 119rpx;
}
.phone-input3 {
  width: 100%;
  color: #000;
  font-size: 40rpx;
  text-align: center;
  height: 119rpx;
  line-height: 119rpx;
}

/* 修改 placeholder 样式 */
.phone-input::-webkit-input-placeholder {
  font-weight: 400;
  font-size: 30rpx;
  color: #AAAAAA;
  text-align: center;
}

.phone-input:-moz-placeholder {
  font-weight: 400;
  font-size: 30rpx;
  color: #AAAAAA;
  text-align: center;
}

.phone-input::-moz-placeholder {
  font-weight: 400;
  font-size: 30rpx;
  color: #AAAAAA;
  text-align: center;
}

.phone-input:-ms-input-placeholder {
  font-weight: 400;
  font-size: 30rpx;
  color: #AAAAAA;
  text-align: center;
}

.exchange-btn {
  width: 620rpx;
  height: 100rpx;
  background: #FF6B35;
  border-radius: 50rpx;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #FFFFFF;
  font-size: 36rpx;
  margin-bottom: 30rpx;
}
.exchange-btn-new {
	
  width: 440rpx;
  height: 94rpx;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #FFFFFF;
  font-size: 20rpx;
  margin-top: 510rpx;
  background-image: url('/static/button.png');
  background-size: 100% 100%;
}
.agreement {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10rpx;
  margin-top: 60rpx;
  margin-bottom: 40rpx;
}

.agreement-content {
  display: flex;
  align-items: center;
  gap: 8rpx;
}


.checkbox .uni-checkbox-wrapper .uni-checkbox-input {
  width: 24rpx;
  height: 24rpx;
  border-radius: 6rpx;
  border: 2rpx solid #999999;
  background-color: transparent !important;
}

.checkbox .uni-checkbox-wrapper .uni-checkbox-input svg {
  color: #FF6B35 !important;
}

.agreement-text {
  font-size: 24rpx;
  color: #666666;
}

.agreement-desc {
  font-size: 24rpx;
  color: #999999;
}

.link {
  color: #FF6B35;
}

/* 弹出层样式 */
.popup-mask {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 999;
  display: flex;
  align-items: flex-end;
}

.popup-content {
  background-color: #FFFFFF;
  border-radius: 30rpx 30rpx 0 0;
  padding: 40rpx;
  width: 100%;
  box-sizing: border-box;
  position: relative;
}

.popup-close {
  position: absolute;
  top: 20rpx;
  right: 20rpx;
  width: 60rpx;
  height: 60rpx;
  line-height: 60rpx;
  text-align: center;
  font-size: 40rpx;
  color: #999999;
  cursor: pointer;
}

.popup-tips {
  color: #888888;
  text-align: center;
  padding: 36rpx 0;
}

.popup-title {
  font-size: 32rpx;
  color: #333333;
  text-align: center;
  margin-bottom: 40rpx;
}

.popup-input-box {
  background-color: #F5F5F5;
  border-radius: 12rpx;
  padding: 20rpx;
  margin-bottom: 40rpx;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.popup-input {
  flex: 1;
  height: 80rpx;
  font-size: 32rpx;
  text-align: center;
}

.countdown {
  font-size: 28rpx;
  color: #FF6B35;
  padding: 0 20rpx;
  height: 80rpx;
  line-height: 80rpx;
  border-left: 2rpx solid #E5E5E5;
}

.popup-btns {
  display: flex;
  justify-content: space-between;
  gap: 20rpx;
}

.popup-btn {
  flex: 1;
  height: 88rpx;
  border-radius: 44rpx;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 32rpx;
}

.popup-btn.cancel {
  background-color: #F5F5F5;
  color: #666666;
}

.popup-btn.confirm {
  background-color: #FF6B35;
  color: #FFFFFF;
}
.fk{
	width: 100%;
	margin: 39rpx 0 0 0;
	text-align: center;
	color: #000000;
	font-size: 35rpx;
	/* font-weight: 600; */
	/* font-family: 'Alibaba-PuHuiTi-M' !important; */
}
.money{
	width: 100%;
	margin: 10rpx 0 0 0;
	align-items: baseline;
	justify-content: center;
	color: #000000;
	font-weight: 700;
	/* font-family: 'Alibaba-PuHuiTi-M' !important; */
	
}
.money-24{
	font-size: 48rpx;
	
}
.money-40{
	font-size: 80rpx;
	
}
.money-12{
	font-size: 24rpx;
	
	color: #AAAAAA;
}
.input-line{
		width: 670rpx;
		height: 119rpx;
		margin: 10rpx auto 0 auto;
		background-color: #f4f4f4;
		border:1rpx dashed #a1a1a1 ;
		align-items: center;
		border-radius: 50rpx;
		/* padding: 0 0 0 20rpx; */
	}
.zfb-line{
	width: 100%;
	margin: 69rpx auto 69rpx auto;
	justify-content: center;
}
.zfb-logo{
	width: 40rpx;
	height: 40rpx;
	background-image: url('/static/vxlogo.png');
	background-size: 100% 100%;
}
.zfb-text{
	margin-left: 8rpx;
	font-size: 28rpx;
	color: #000;
}
.cy-icon{
	position: absolute;
	right: 27rpx;
	top: 25rpx;
	width: 89rpx;
	height: 45rpx;
	background: #78B2D1;
	border-radius: 10rpx;
	text-align: center;
}
.cy-word{
	
	font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
	font-weight: 400;
	font-size: 30rpx;
	color: #FFFFFF;
	/* line-height: 54px; */
	/* text-align: left; */
	font-style: normal;
	text-transform: none;
}
.rule-wsd{
	margin: 64rpx auto auto auto;
	width: 161rpx;
	height: 58rpx;
	/* font-family: Alibaba PuHuiTi, Alibaba PuHuiTi; */
	font-weight: 400;
	font-size: 24rpx;
	color: #FFFFFF;
	line-height: 43rpx;
	text-align: center;
	font-style: normal;
	/* text-transform: none; */
}
.bottom-msg{
	margin: 0 auto auto auto;
	width: 584rpx;
	height: 58rpx;
	font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
	font-weight: 400;
	font-size: 24rpx;
	color: #FFFFFF;
	line-height: 43rpx;
	text-align: center;
	font-style: normal;
	text-transform: none;
}
.jf-word{
	margin-top: 55rpx;
	/* width: 416rpx; */
	height: 175rpx;
	font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
	font-weight: 800;
	font-size: 105rpx;
	color: #FFFFFF;
	line-height: 189rpx;
	text-align: left;
	font-style: normal;
	text-transform: none;
}
.tb{
	width: 530rpx;
	height: 66rpx;
	background: #FA7B31;
	border-radius: 12rpx 12rpx 12rpx 12rpx;
	border: 2rpx solid #FFFFFF;
	overflow: hidden;
	
}
.tb-r{
	width: 265rpx;
	height: 66rpx;
	font-weight: 500;
	font-size: 36rpx;
	color: #FA7B31;
	line-height: 66rpx;
	background: #FFFFFF;
	text-align: center;
}
.tb-l{
	width: 265rpx;
	height: 66rpx;
	font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
	font-weight: 400;
	font-size: 36rpx;
	color: #FFFFFF;
	background: #FA7B31;
	border: 1rpx solid #FFFFFF;
	color: #FFFFFF;
	text-align: center;
	border-radius: 12rpx 0 0 12rpx;
	line-height: 64rpx;
}
.today{
	width: 137rpx;
	height: 46rpx;
	background: linear-gradient( 180deg, #F2A134 0%, #FF632F 100%);
	border-radius: 0rpx 16rpx 0rpx 16rpx;
	font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
	font-weight: 400;
	font-size: 24rpx;
	color: #FFFFFF;
	margin:0 0 0 auto;
	text-align: center;
	
	
}
.zf-title{
	margin-top: -8rpx;
	height: 58rpx;
	font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
	font-weight: 400;
	font-size: 36rpx;
	color: #000000;
	
}
.zf-line{
	width: 50rpx;
	height: 0rpx;
	border: 2rpx solid #000000;
	
}
.zf-word{
	text-align: center;
	margin:auto 21rpx;
}
.gj{
	margin: 22rpx 0 auto auto;
	width: 310rpx;
	height: 199rpx;
	font-family: Arial, Arial;
	font-weight: bold;
	font-size: 220rpx;
	color: #FF0034;
	line-height: 220rpx;
	align-items: baseline;
	justify-content: center;
	
}

.gj-yuan{
	font-size: 64rpx;
	/* line-height: 64rpx; */
}
.gj-gj{
	width: 96rpx;
	height: 31rpx;
	font-weight: 400;
	font-size: 24rpx;
	color: #5E3131;
	text-align: left;
	font-style: normal;
	text-transform: none;
	margin: 54rpx auto auto 0;
}
.auto-zfb{
	margin-top: 27rpx;
	width: 324rpx;
	height: 58rpx;
	font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
	font-weight: 400;
	font-size: 24rpx;
	color: #FA7B31;
	line-height: 43rpx;
	text-align: center;
	
}
.mid-line{
	/* margin-top: 15rpx; */
	width: 539rpx;
	height: 2rpx;
	background-image: repeating-linear-gradient(
	  to right,
	  transparent,
	  transparent 6rpx, /* 虚线段长度 */
	  #5E3131 15rpx,
	  #5E3131 30rpx     /* 间隔长度 */
	);
	
}
.auto-word{
	margin-top: 44rpx;
	width: 244rpx;
	height: 39rpx;
	font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
	font-weight: 400;
	font-size: 24rpx;
	color: #727272;
	line-height: 43rpx;
	text-align: center;
	
}
.change-wsd{
	margin-top: 50rpx;
	width: 514rpx;
	height: 90rpx;
	border-radius: 50rpx;
	background-image: linear-gradient(to bottom,#FF809A,#FE496E);
	font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
	font-weight: 400;
	font-size: 48rpx;
	color: #FFFFFF;
	line-height: 86rpx;
	text-align: center;
	
}
.content-box {
	position: relative;
  display: flex;
  width: 625rpx;
  height: 599rpx;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  margin-top: 467rpx;
  /* padding: 40rpx 20rpx; */
  background-image: url('/static/box0627.png');
  background-size: 100% 100%;
  /* border-radius: 30rpx; */
}
.phone-box-icon {
  position: absolute;
  top: 310rpx;
  left: 8rpx;
  width: 83rpx;
  height: 105rpx;
  /* background-color: rgba(255, 255, 255, 0.8); */
  background-image: url('/static/cus.png');
  background-size: 100% 100%;
  background-position: center;
  /* display: flex;
  justify-content: center;
  align-items: center; */
  /* border-radius: 20rpx; */
  /* padding: 10rpx; */
  z-index: 100;
}
.input-new{
	width: 514rpx;
	height: 90rpx;
	margin-top: 27rpx;
	border-radius: 50rpx;
	background-color: #F8F8F8;
	border: #949494 1rpx;
	padding: 0 36rpx;
}
.phone-input-new{
	width: 236rpx;
	height: 64rpx;
	font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
	font-weight: 400;
	font-size: 36rpx;
	color: #000;
	line-height: 65rpx;
	text-align: left;
	font-style: normal;
	text-transform: none;
}
.phone-input-new2{
	
	height: 64rpx;
	font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
	font-weight: 400;
	font-size: 36rpx;
	color: #B7B7B7;
	line-height: 65rpx;
	text-align: left;
	font-style: normal;
	text-transform: none;
}
.jf-num{
	margin: 24rpx auto auto auto;
	width: 276rpx;
	height: 39rpx;
	font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
	font-weight: 400;
	font-size: 24rpx;
	color: #B8B8B8;
	line-height: 43rpx;
	text-align: center;
	font-style: normal;
	text-transform: none;
}
.new-rule{
	width: 100%;
	height: 43rpx;
	font-family: Alibaba PuHuiTi 3.0, Alibaba PuHuiTi 30;
	font-weight: normal;
	font-size: 24rpx;
	color: #fff;
	line-height: 43rpx;
	text-align: center;
	font-style: normal;
	text-transform: none;
	margin: auto auto 7rpx auto;
}
.icp-word{
	width: 100%;
	height: 43rpx;
	font-family: Alibaba PuHuiTi 3.0, Alibaba PuHuiTi 30;
	font-weight: normal;
	font-size: 24rpx;
	color: #fff;
	line-height: 43rpx;
	text-align: center;
	font-style: normal;
	text-transform: none;
	margin: 0rpx auto 27rpx auto;
}
.xy-title{
	width: 100%;
	height: 58rpx;
	font-family: Alibaba PuHuiTi 3.0, Alibaba PuHuiTi 30;
	font-weight: normal;
	font-size: 36rpx;
	color: #000000;
	line-height: 65rpx;
	text-align: center;
	font-style: normal;
	text-transform: none;
	margin: 13rpx auto 0 auto;
}
.xy-content{
	width: 575rpx;
	height: 671rpx;
	font-family: Alibaba PuHuiTi 3.0, Alibaba PuHuiTi 30;
	font-weight: normal;
	font-size: 20rpx;
	color: #000000;
	line-height: 28rpx;
	text-align: left;
	font-style: normal;
	text-transform: none;
	margin: 0 auto auto auto;
	overflow-y: scroll;
}
.lj{
	width: 100%rpx;
	height: 43rpx;
	font-family: Alibaba PuHuiTi 3.0, Alibaba PuHuiTi 30;
	font-weight: normal;
	font-size: 24rpx;
	color: #676767;
	line-height: 43rpx;
	text-align: center;
	font-style: normal;
	text-transform: none;
	margin: 20rpx auto 0 auto;
}
</style>
